package com.letao.service;

import java.io.File;
import java.util.List;

import com.letao.pojo.*;



/**
 * @author xingkong
 *
 */
public interface GoodsServiceInterface {
	/**
	 * 增加一个商品
	 * @param goods
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean addGoods(Goods goods) throws Exception;
	/**
	 * 删除某个商品
	 * @param goods
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean deleteGoods(Goods goods) throws Exception;
	/**
	 * 更新某个商品信息
	 * @param goods
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean updateGoods(Goods goods) throws Exception;
	/**
	 * 插入新类别
	 * @param category 类别信息
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean addCategory(Category category) throws Exception;
	/**
	 * 删除某个类别
	 * @param category 类别信息
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean deleteCategory(Category category) throws Exception;
	/**
	 * 更新某个类别
	 * @param category 类别信息
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean updateCategory(Category category) throws Exception;
	/**
	 * 获取所有类别
	 * @return List
	 * @throws Exception
	 */
	List<Category> getAllCategory()throws Exception;
	
	/**
	 * 获取某个类别下的所有商品
	 * @param Cid 类别ID
	 * @return List
	 * @throws Exception
	 */
	List<Goods> getGoodsByCategory(Integer Cid)throws Exception;
	
	/**
	 * 根据ID获取商品信息
	 * @param Gid 商品ID
	 * @return Goods
	 * @throws Exception
	 */
	Goods getGoodsByGoodsId(Integer Gid)throws Exception;
	
	/**
	 * 根据商品ID获取商品评价信息
	 * @param Gid 商品ID
	 * @return List
	 * @throws Exception
	 */
	List<Evaluation> getEvaluationByGoodsId(Integer Gid)throws Exception;
	
	/**
	 * 获取最热商品
	 * @return list
	 * @throws Exception
	 */
	List<Goods> getGoodsByHot()throws Exception;
	
	/**
	 * 收藏商品
	 * @param userCollection 收藏信息
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean addCollection(UserCollection userCollection)throws Exception;
	/**
	 * 删除收藏
	 * @param userCollection 收藏信息
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean deleteCollection(UserCollection userCollection)throws Exception;
	/**
	 * 更新收藏
	 * @param userCollection 收藏信息
	 * @return boolean 是否成功
	 * @throws Exception
	 */
	boolean updateCollection(UserCollection userCollection)throws Exception;
	/**
	 * 根据用户ID获取用户收藏的商品
	 * @param Uid 用户ID
	 * @return List
	 * @throws Exception
	 */
	List<UserCollection> getUserCollectionByUser(Integer Uid)throws Exception;
	
	/**
	 * 获取用户发布的商品
	 * @param Uid 用户ID
	 * @return List
	 * @throws Exception
	 */
	List<Goods> getGoodsByOwer(Integer Uid)throws Exception;
	
	/**
	 * 根据位置获取周边所有商品
	 * @param location 位置
	 * @param r 半径
	 * @return List
	 * @throws Exception
	 */
	List<Goods> getGoodsByLocation(String location,Double r)throws Exception;
	
	/**
	 * 寻找附近同类商品
	 * @param Cid 类别信息
	 * @param location 位置信息
	 * @param r 半径
	 * @return List
	 * @throws Exception
	 */
	List<Goods> getGoodsByCategoryAndLocation(Integer Cid,String location,Double r)throws Exception;
	
	/**
	 * 寻找附近同名商品
	 * @param Gname 商品名称
	 * @param r 半径
	 * @param location 位置信息
	 * @return List
	 * @throws Exception
	 */ 
	List<Goods> getGoodsByNameAndLocation(String Gname,String location,Double r)throws Exception;
	
	
	/**
	 * @param goods 物品类
	 * @param fileList 突变文件列表
	 * @return
	 * @throws Exception
	 */
	boolean addGoodsImage(Goods goods,List<File> fileList)throws Exception;
}
